export interface ApiResponse<T = any> {
  code: number;
  message: string;
  data: T;
}

export interface PageQuery {
  page: number;
  pageSize: number;
  [key: string]: any | number;
}

export interface PageResult<T> {
  list: T[];
  total: number;
  page: number;
  pageSize: number;
}

export interface Patient {
  id: number;
  userId: number;
  name: string;
  gender: 'male' | 'female';
  idCard: string;
  phone: string;
  birthDate: string;
  address?: string;
  isDefault?: boolean;
  relation?: string;
}

export interface Appointment {
  id: number;
  orderNo: string;
  userId: number;
  patientId: number;
  patientName: string;
  hospitalId: number;
  hospitalName: string;
  departmentId: number;
  departmentName: string;
  doctorId: number;
  doctorName: string;
  appointmentDate: string;
  appointmentTime: string;
  status: string;
  fee: number;
  createTime: string;
  cancelReason?: string;
  rating?: number;
  comment?: string;
}

export interface Hospital {
  id: number;
  name: string;
  level: string;
  type: string;
  address: string;
  phone: string;
  description: string;
  image: string;
  tags?: string[];
  geoLocation?: {
    lat: number;
    lng: number;
  };
}

export interface Department {
  id: number;
  name: string;
  intro: string;
  image?: string;
  hospitalId?: number;
  hospitalName?: string;
  doctorCount?: number;
}

export interface Doctor {
  id: number;
  name: string;
  title: string;
  avatar: string;
  specialty: string;
  hospitalId: number;
  hospitalName: string;
  departmentId: number;
  departmentName: string;
  goodAt: string;
  introduction: string;
  consultationFee: number;
  rating: number;
  consultationCount: number;
} 